#include<stdio.h>
//以source指向的地址为起点，将连续的n个字节数据，复制到以destin指向的地址为起点的内存中
//把源空间的num个字节的内容拷贝到目标空间里
#include<assert.h>
//实现的是只有字符串可以进行复制
// char* my_memcpy(char* desc,const char* scr,int num)
// {
//     char* ret=desc;
//     assert(desc && scr);
//     while(num--)
//     {
//         *desc=*scr;
//         desc=desc+1;
//         scr=scr+1;
//     }
//     return ret;

// }

// int main()
// {
//     char scr[]="zxcasd";
//     char desc[]="xxxxxxxxxxx";
//     int num=5;
//     my_memcpy(desc,scr,num);
//     printf("%s",desc);
//     return 0;
// }

//输出结果：zxcasxxxxxx

//当任何类型都要输出时
//返回值类型应该改变为void
//那么此时所有类型就要进行强转,强转为想要输出的类型
// void* my_memcpy(char* desc,const char* scr,int num)
// {
//     char* ret=(char*)desc;
//     assert(desc && scr);
//     while(num--)
//     {
//         *(char *)desc=*(char*)scr;
//         desc=(char*)desc+1;
//         scr=(char*)scr+1;
//     }
//     return ret;

// }

// int* my_memcpy(int* desc,const int* scr,int num)
// {
//     int* ret=desc;
//     assert(desc && scr);
//     while(num--)
//     {
//         *desc=*scr;
//         desc=desc+1;
//         scr=scr+1;
//     }
//     return ret;

// }

// int main()
// {
//     int scr[]={1,2,3,4,5,6,7,8,9};
    
//     int num=5;
//     //目标函数小于原函数
//     my_memcpy(scr+1,scr+2,num);
//     for(int i=0;i<9;i++)
//     {
//        printf("%d",scr[i]); 
//     }
    
//     return 0;
// }
//结果：134567789
#include<string.h>
int main()
{
    int scr[]={1,2,3,4,5,6,7,8,9};
    
    int num=5;
    //目标函数小于原函数
    memcpy(scr+1,scr+2,num);
    for(int i=0;i<9;i++)
    {
       printf("%d",scr[i]); 
    }
    
    return 0;
}